package com.whut.service;

import com.whut.model.ContractCheckTask;
import com.whut.v_model.ProjectScore;
import com.whut.v_model.RiskWarning;
import com.whut.v_model.UnitRankStatistics;
import org.springframework.lang.Nullable;

import java.util.List;

/**
 * 统计（Web与APP）的接口
 * @author fanyu
 * @date 19.7.27 22:34
 */
public interface StatisticService {
    public Object getUnitRanking(String startTime,String endTime,String unitType,int curPage,int pageSize);
    public Object getAllUnitRanking(String startTime,String endTime,int curPage,int pageSize);
    public Object getTaskByContractId(String contractId);
    public Object getProjectByTaskId(String taskId,String startTime,String endTime,String unit);
    public Object getAllUnitInfo(String contractId,String startTime,String endTime);
    public Object getProblemCollectInfo(String checkId);
    public Object getStatisticRiskPointInfo(String checkId,String system);
    public Object getProjectOnlyByTaskId(String taskId, String startTime, String endTime);
    public Object getProblemNumSearch1(String checkId,String system);
    public Object getRiskPointStatisticInfo(String checkId,String system);

    /**
     * 根据委托方Id 与 搜索类型来搜索工程的统计信息
     * @param contractId int 合同ID
     * @param type int 搜索种类 0 搜索周期；1 月；2 季；3 年
     * @return List<ProjectScore>
     */
    public List<ProjectScore> getProjectScoreTendency(int contractId, int type);

    /**
    * 根据确定的检查ID查找这次检查中第四级别的统计信息（APP使用）
    * @author fuzhenjie
    * @date 19.7.27 20:53
    * @param checkId int 检查Id
    * @return java.lang.Object
    */
    public Object getCheckFourthStatistics(int checkId);

    /**
    * 根据确定的合同ID 以及参建单位类型 以及搜索时间类型 返回 参建单位排序评分统计信息（APP使用）
    * @author fuzhenjie
    * @date 19.7.27 21:27
    * @param contractId int 委托方ID/合同ID
    * @param unitType int 参建单位类型 0：sgUnit施工单位  1：jlUnit监理单位  2：jsUnit建设单位
    * @param timeType int 搜索时间类型 0：null 1:本月与上月 2：本季度与上季度  3：今年与去年
    * @return java.util.List<com.whut.v_model.UnitRankStatistics>
    */
    public List<UnitRankStatistics> getUnitPointRank(int contractId, int unitType, int timeType);

    /**
    * 通过周期ID （taskId） 从cct表中查出已经结束的cct列表
    * @author fuzhenjie
    * @date 19.7.28 21:37
    * @param taskId int 周期(片区项目)Id
    * @param st String 搜索开始时间 可以为空
    * @param et String 搜索结束时间 可以为空
    * @return java.util.List<com.whut.model.Contractchecktask>
    */
    public List<ContractCheckTask> getFinishedCheckByTaskId(int taskId, @Nullable String st, @Nullable String et);

    /*lyl*/
  /**
  * 根据项目名称获取分数
  * @author liyvanliang
  * @date 2019/7/29 17:07
  * @param checkId int 检查ID
  * @return java.lang.Object
  */
    public Object getProjectPiont(String checkId, int number);

    /**
     * 为统计信息获取全部的人员信息
     *
     * @param ""
     * @return java.lang.Object
     * @author fanyu
     * @date 2019/8/5 17:17
     */
    public Object getPersonInfoForSta();

    /*wyh*/
    /**
     * @Author wenyihan
     * @Description 统计单位问题数量信息N
     * @Date 15:34 2019/8/8
     * @Param checkId String 每个项目的检查ID
     * @Param unit String 包含单位类型和单位名称的二维json数组
     * @Param system String 转为list后第x个数据对应problem_collect_detail视图中的preumx+1
     * @return java.lang.Object
     */
    public Object unitProblemNumStatistic(String checkId, String unit, String system);

    /**
     * @Author wenyihan
     * @Date 11:50 2019/8/9
     * @Param [checkId, unit]
     * @return java.lang.Object
     */
    public Object unitRiskPiontStatistic(String checkId, String unit);

    /**
    * 模糊聚类查找符合条件的检查
    * @author fanyu
    * @date 2019/10/15 10:56
    * @params [taskId, startTime, endTime, clusterType]
    * @return java.lang.Object
    */
    public Object getProjectForFuzzyCluster(String taskId, String startTime, String endTime,String clusterType);
    /**
     * 根据时间和用户id搜索符合条件的委托方信息
     * @author fanyu
     * @date 2019/10/28 17:55
     * @params [userId, startTime, endTime]
     * @return java.lang.Object
     */
    public Object getClientInfoForUserStatistic(int userId,String startTime,String endTime);
    /**
     * 根据用户id和委托方信息搜索片区信息
     * @author fanyu
     * @date 2019/10/28 18:34
     * @params [userId, startTime, endTime, contractId]
     * @return java.lang.Object
     */
    public Object getTaskForUserStatistic(int userId,String startTime,String endTime,String contractId);
    /**
     * 根据用户id和片区信息搜索检查项目信息
     * @author fanyu
     * @date 2019/10/29 21:27
     * @params [userId, startTime, endTime, taskId]
     * @return java.lang.Object
     */
    public Object getProjectForUserStatistic(int userId,String startTime,String endTime,String taskId);
    /**
     * 根据用户id和检查项目id来搜索改检查人员检查的体系内容
     * @author fanyu
     * @date 2019/10/30 14:03
     * @params [userId, startTime, endTime, checkId]
     * @return java.lang.Object
     */
    public Object getSystemInfoForUserStatistic(int userId,String startTime,String endTime,String checkId);
    /**
     * 获取人员问题统计的表格信息
     * @author fanyu
     * @date 2019/10/30 21:53
     * @params [userId, checkInfo, system]
     * @return java.lang.Object
     */
    public Object getTableDataForUserStatistic(int userId,String checkInfo,String system);

    public Object getProjectByTask(String taskId,String startTime,String endTime);

    List<RiskWarning> getProblemByCheckandSystem(String checkId, String system);

    public Object getProblemsByContractandUnit(String contractId,String jsUnit ,String jlUnit,String sgUnit);

    public Object getAllsgUnit();
    public Object getAlljsUnit();
    public Object getAlljlUnit();
}
